package com.matrix.codeGeneration.model;

import java.util.List;
import java.util.Map;

import com.matrix.codeGeneration.convert.DefaultNameConvert;
import com.matrix.codeGeneration.convert.NameConvert;

public abstract class OutDataSource {

	private String targetPath;

	private NameConvert nameConvert = new DefaultNameConvert();
	/**
	 * 根据客户的选择生成表与类的对应
	 */
	private List<TableClassModel> tableClassModels;

	/**
	 * 根据客户的选择生成模型文件
	 */
	private Map<String, CodeModel> codeModels;

	/**
	 * 是否要生成文件 的包名
	 */
	private List<String> modelPackages;

	/**
	 * 用户模板根目录
	 */
	private String userTempLataHome;

	public abstract List<TableClassModel> convertToTableModel();

	public String getTargetPath() {
		return targetPath;
	}

	public void setTargetPath(String targetPath) {
		this.targetPath = targetPath;
	}

	public List<TableClassModel> getTableClassModels() {
		return tableClassModels;
	}

	public void setTableClassModels(List<TableClassModel> tableClassModels) {
		this.tableClassModels = tableClassModels;
	}

	public Map<String, CodeModel> getCodeModels() {
		return codeModels;
	}

	public void setCodeModels(Map<String, CodeModel> codeModels) {
		this.codeModels = codeModels;
	}

	public List<String> getModelPackages() {
		return modelPackages;
	}

	public void setModelPackages(List<String> modelPackages) {
		this.modelPackages = modelPackages;
	}

	public String getUserTempLataHome() {
		return userTempLataHome;
	}

	// 这里支持classpath
	public void setUserTempLataHome(String userTempLataHome) {
		String cuttentPath = ClassLoader.getSystemResource("").toString().substring(5);
		cuttentPath = cuttentPath + userTempLataHome;
		this.userTempLataHome = cuttentPath;
	}

	public NameConvert getNameConvert() {
		return nameConvert;
	}

	public void setNameConvert(NameConvert nameConvert) {
		this.nameConvert = nameConvert;
	}

	 

}
